namespace UnityEngine
{
    public static class TransformExtension
    {
        /// <summary>
        /// 获取全路径
        /// </summary>
        /// <param name="transform"></param>
        /// <returns></returns>
        public static string GetFullPath(this Transform transform)
        {
            if (transform == null)
            {
                return string.Empty;
            }

            // 递归获取父物体的路径
            if (transform.parent != null)
            {
                return transform.parent.GetFullPath() + "/" + transform.name;
            }

            // 如果没有父物体，直接返回当前物体的名称
            return transform.name;
        }

        /// <summary>
        /// 获取相对于指定父级的路径
        /// </summary>
        /// <param name="transform"></param>
        /// <param name="parent"></param>
        /// <returns></returns>
        public static string GetRelativePathTo(this Transform transform, Transform parent)
        {
            if (transform == parent)
                return "";  // 当前 transform 就是 parent 时，返回空字符串
            if (transform.parent == null)
                return null;  // 已经是最顶层，但未找到指定的 parent
            if (transform.parent == parent)
                return transform.name;  // 找到指定的 parent，返回当前 transform 的名字

            string path = transform.parent.GetRelativePathTo(parent);
            if (path == null)
                return null;  // 如果 parent 不在当前 transform 的父链中，返回 null
            return path + "/" + transform.name;
        }
    }
}
